package 公司真题.携程;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class _找出成对括号 {
    public static void main(String[] args) {
        // 思路，解析传进来的字符串，将数字跳过，只记录每个括号的类型和位置，用entity这个自定义的
        // 类，并存入到entity数组中去，然后利用Stack进行操作
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().trim();
        char[] arr = str.toCharArray();
        List<Entity> list = new ArrayList<>();
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == '(' || arr[i] == ')') {
                list.add(new Entity(arr[i],i));
                count++;
            }
        }

        // 输出一个有几对括号
        System.out.println(count >> 1);

        // 现在该如何输出每个括号的顺序和位置呢 ？？？
        // 有个时间复杂度为n^2的方法
        Entity[] entities = list.toArray(new Entity[]{});
        for (int i = 0; i < entities.length; i++) {
            if (entities[i].value == '(') {
                System.out.println(entities[i].index);
                int xian_zai_de_zuo_kuo_hao = 1;
                int index = i + 1;
                while (index < entities.length) {
                    if (entities[index].value == '(') {
                        xian_zai_de_zuo_kuo_hao++;
                    } else {
                        xian_zai_de_zuo_kuo_hao--;
                    }
                    if (xian_zai_de_zuo_kuo_hao == 0) {
                        System.out.println(entities[index].index);
                        break;
                    }
                    index++;
                }
            }
        }
    }
}
class Entity { // 这个类用于存储每个括号，以及其对应的数组位置
    char value;
    int index;
    public Entity() {}
    public Entity(char value, int index) {
        this.value = value;
        this.index = index;
    }
}